package com.cloud.springbootcloud.utils;
/**
 * @Title JSONResult.java
 * @Package com.imooc.utils
 * @Description: 自定义响应数据结构
 *               本类可提供给H5/ios/安卓/公众号/小程序使用
 *               前端接受此类数据（json object)后，可自行根据业务去实现相关功能
 *               200:表示成功
 *               500:表示错误，错误信息在msg字段中
 *               501:bean验证错误，不管多少错误都以map形式返回
 *               502：拦截器拦截到用户token出错
 *               555：异常抛出信息
 *               556：用户qq校验异常
 *               557：校验用户是否在CAS登录，用户门票校验
 * @Copyright: Copyright (C) 2020
 */
public class JSONResult {
	//响应业务状态
	private Integer status;
	//响应消息
	private String msg;
	//响应中的数据
	private Object data;
	//不使用
	private String ok;
	
	public JSONResult() {
	}
	
	public JSONResult(Integer status, String msg, Object data) {
		this.status = status;
		this.msg = msg;
		this.data = data;
	}
	
	public JSONResult(Integer status, String msg, Object data, String ok) {
		this.status = status;
		this.msg = msg;
		this.data = data;
		this.ok = ok;
	}
	
	public JSONResult(Object data) {
		this.status = 200;
		this.msg = "OK";
		this.data = data;
	}

	public JSONResult(Object data, String ok) {
		this.status = 200;
		this.msg = "OK";
		this.data = data;
		this.ok = ok;
	}

	public static JSONResult build(Integer status, String msg, Object data) {
		return new JSONResult(status, msg, data);
	}
	
	public static JSONResult build(Integer status, String msg, Object data,String ok) {
		return new JSONResult(status, msg, data, ok);
	}
	
	public static JSONResult ok(Object data) {
		return new JSONResult(data);
	}

	public static JSONResult ok(Object data,String ok) {
		return new JSONResult(data,ok);
	}
	
	public static JSONResult ok() {
		return new JSONResult(null);
	}
	
	public static JSONResult errorMsg(String msg) {
		return new JSONResult(500,msg,null);
	}
	
	public static JSONResult errorMap(Object data) {
		return new JSONResult(501,"error",data);
	}
	
	public static JSONResult errorTokenMsg(String msg) {
		return new JSONResult(502,msg,null);
	}
	
	public static JSONResult errorException(String msg) {
		return new JSONResult(555,msg,null);
	}
	
	public static JSONResult errorUserQQ(String msg) {
		return new JSONResult(556,msg,null);
	}
	
	public static JSONResult errorUserTicket(String msg) {
		return new JSONResult(557,msg,null);
	}
	public Boolean isOK(){
		return this.status ==200;
	}
	
	public Integer getStatus() {
		return status;
	}
	
	public void setStatus(Integer status) {
		this.status = status;
	}
	
	public String getMsg() {
		return msg;
	}
	
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	public Object getData() {
		return data;
	}
	
	public void setData(Object data) {
		this.data = data;
	}
	
	public String getOk() {
		return ok;
	}
	
	public void setOk(String ok) {
		this.ok = ok;
	}
}
